home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
T-TPUG Old Monthly Disks
/
(c)tt.d64
/
ponzo tutor-4.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
16KB
|
519 lines
0 REM" PONZO*82*WATERLOO
1 [143]"
50 POKE53281,15:POKE53280,12:PRINT"[144]"
100 PRINT"[147] C64 TUTOR-4
101 [153]"ORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^"
102 [153]"(null) INSIDE THE C64 WAIT (null)":MS$[178]" WELCOME! "
103 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXPSTOP"
1000 [141]60000:[141]63100:[141]63000
1005 [153]"LOADC64 MEMORY"
1010 [153]"MEMORY RUNS FROM 0 TO 65535 (DECIMAL)"
1020 [153]"OR 0000 TO FFFF (HEXADECIMAL)"
1030 [153]"(WRITTEN $0000 $FFFF)"
1040 [153]"SOME IS FOR YOU..SOME FOR ME."
1050 [153]"(ABOUT HALF/HALF)"
1060 [153]"LET ME SHOW YOU..."
1070 [141]63000
1080 [153]"LOADBOTTOM HALF OF MEMORY"
1090 [153]"DECIMAL HEX"
1100 [153]"32768=$8000-SPC(SPC(SPC(SPC(SPC(SPC(_TOP OF BASIC MEMORY"
1110 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
1120 [153]" - - - +"
1125 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)"
1130 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)BASIC"
1140 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)PROGRAMS"
1150 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_(null)IN HERE"
1155 [153]" 2048=$0800-SPC(SPC(SPC(SPC(SPC(SPC(_BASIC MEMORY STARTS"
1160 [153]" 2047=$07FF-SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$SCREEN MEMORY"
1170 [153]" 1024=$0400-SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
1190 [153]" 1023=$03FF SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
1200 [153]" SPC(SPC(SPC(SPC(SPC(SPC( MY WORKSPACE"
1210 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)"
1220 [153]" SPC(SPC(SPC(SPC(SPC(SPC( "
1230 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_POINTERS
1240 PRINT" [166][166][166][166][166][166]_TO MAGIC
1250 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_MEMORY LOC'NS"
1260 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_FLAGS,ETC."
1270 [153]" SPC(SPC(SPC(SPC(SPC(SPC("
1280 [153]" 0=$0000-SPC(SPC(SPC(SPC(SPC(SPC(_(null)BOTTOM"
1290 [141]63000
1300 [153]"LOADI STORE BYTES READ FROM A DATASETTE"
1310 [153]"IN 'BUFFERS' UNTIL I GET ENOUGH"
1320 [153]"TO STUFF INTO 'BASIC MEMORY'"
1330 [153]"(IF THEY'RE BASIC PROGRAMS)."
1340 [153]"THESE ARE (USUALLY) NICE PLACES TO PUT"
1350 [153]"MACHINE LANGUAGE PROGRAMS."
1360 [153]"WHEN YOU DEFINE VARIABLES X,Y,A(I),ETC."
1370 [153]"I STORE THEM AFTER YOUR BASIC PROGRAM."
1380 [153]"WHEN YOU DEFINE STRINGS A$,C$(I),ETC."
1390 [153]"I STORE THEM AT THE 'TOP'."
1400 [153]"TO KEEP TRACK OF WHERE I PUT THINGS"
1410 [153]"I STORE POINTERS IN LOW MEMORY:"
1420 [141]63000
1430 [153]"LOADTHE ADDRESS OF"[163]25)" IS STORED AT"
1440 [153]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE"[163]25)"FREFREFREFREFREFREFREFREFREFREFREFREFREFRE"
1450 [153]"START OF BASIC"[163]25)"43/44 =$2B/$2C"
1460 [153]"^(USUALLY 2049=$0801)"
1470 [153]"END OF PROGRAM"[163]25)"45/46 =$2D/$2E"
1480 [153]"^(VARIES WITH PROGRAM)"
1485 [153]" (AND GIVES START OF )"
1486 [153]" (VARIABLES TOO)"
1487 [153]"BOTTOM OF STRINGS"[163]25)"51/52 =$33/$34"
1488 [153]"^(VARIES WITH PROGRAM)"
1489 [153]" ($7FFF & DOWN_STRINGS)"
1490 [153]"TOP OF BASIC RAM"[163]25)"55/56 =$37/$38"
1500 [153]"^(USUALLY 32768=$8000)"
1501 [153]"NOTE: THE 'TOP OF BASIC RAM' MAY BE AT"
1502 [153]"$A000..IF NO 'CARTRIDGE' IS INVOLVED."
1505 [153]"WE'LL COME BACK TO THESE POINTERS LATER!"
1510 [141]63000
1520 [153]"LOADTOP HALF OF MEMORY"
1530 [153]"DECIMAL HEX"
1540 [153]"65535=$FFFF-SPC(SPC(SPC(SPC(SPC(SPC(_TOP OF MEMORY"
1550 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
1560 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)RAM &"
1565 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)ROM"
1570 [153]"49152=$C000 SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
1575 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$"
1576 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)BASIC"
1577 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)INTERPRETER"
1578 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)"
1580 [153]"40960=$A000 SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
1590 [153]" SPC(SPC(SPC(SPC(SPC(SPC(_RIGHT$_ MAY BE"
1595 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)USED BY"
1596 [153]" SPC(SPC(SPC(SPC(SPC(SPC( (null)CARTRIDGE"
1600 [153]"32768=$8000 SPC(SPC(SPC(SPC(SPC(SPC(_(null)"
1660 [141]63000
1750 [153]"LOAD HOW BASIC PROGRAMS ARE STORED"
1760 [153]"RECALL THAT BASIC PROGRAMS (NORMALLY)"
1770 [153]"GO INTO MEMORY STARTING AT $0801(HEX)."
1780 [153]"LET'S LOOK AT THE BYTES THERE FOR THE"
1790 [153]"SIMPLE PROGRAM:"
1800 [153]"10 FORI=1TO10 "
1810 [153]"20 PRINT"[199](34)"*"[199](34)":NEXT"
1820 [153]"WE'LL SYS2048WAIT TO GET TO THE MLM"
1830 [153]"THEN WE'LL .M 0800-0820WAIT TO DISPLAY"
1840 [153]"THE MEMORY HOLDING THIS SIMPLE PROGRAM."
1845 [141]63000:[153]"LOADFOR:"
1846 [153]"10 FORI=1TO10 "
1847 [153]"20 PRINT"[199](34)"*"[199](34)":NEXT"
1848 [153]"WE'LL GET:"
1850 [153]" .: 0800 00 0D 08 0A 00 81 49 B2
1860 PRINT" .: 0808 31 A4 31 30 00 18 08 14
1870 [153]" .: 0810 00 99 22 2A 22 3A 82 00
1880 PRINT" .: 0818 00 00 AA AA AA AA AA AA
1890 SD$[178]"":CL$[178]"WAIT WAIT"
1891 SR$[178]""
1900 SD[178]8:SR[178]10:CC$[178]"00":[141]55000
1910 [153]SD$"I ALWAYS HAVE 00WAIT HERE."
1920 [153]"THAT'S WHY 'SYS2048' WORKS!"
1930 [141]62000
1931 [141]55010
1950 SD[178]8:SR[178]13:CC$[178]"0D 08":[141]55000
1960 [153]SD$"THIS IS THE ADDRESS OF THE NEXTWAIT"
1970 [153]"BASIC INSTRUCTION."
1980 [141]62000
1981 [141]55010
1990 SD[178]8:SR[178]19:CC$[178]"0A 00":[141]55000
2000 [153]SD$"THIS IS THE LINE NUMBER 10WAIT"
2010 [153]" IN HEX."
2020 [141]62000
2021 [141]55010
2030 SD[178]8:SR[178]25:CC$[178]"81":[141]55000
2040 [153]SD$"THIS IS THE 'TOKEN' FOR";
2050 [153]" FORWAIT"
2060 [141]62000
2061 [141]55010
2066 [141]55010
2070 SD[178]8:SR[178]28:CC$[178]"49":[141]55000
2080 [153]SD$"THIS IS THE ASCII CODE FOR";
2090 [153]" IWAIT"
2100 [141]62000
2101 [141]55010
2110 SD[178]8:SR[178]31:CC$[178]"B2":[141]55000
2120 [153]SD$"THIS IS THE ASCII CODE FOR";
2130 [153]" =WAIT"
2140 [141]62000
2141 [141]55010
2150 SD[178]9:SR[178]10:CC$[178]"31":[141]55000
2160 [153]SD$"THIS IS THE ASCII CODE FOR";
2170 [153]" 1WAIT"
2180 [141]62000
2181 [141]55010
2190 SD[178]9:SR[178]13:CC$[178]"A4":[141]55000
2200 [153]SD$"THIS IS THE 'TOKEN' FOR";
2210 [153]" TOWAIT"
2220 [141]62000
2221 [141]55010
2230 SD[178]9:SR[178]16:CC$[178]"31":[141]55000
2240 [153]SD$"THIS IS THE ASCII CODE FOR";
2250 [153]" 1WAIT(AGAIN)"
2260 [141]62000
2261 [141]55010
2270 SD[178]9:SR[178]19:CC$[178]"30":[141]55000
2280 [153]SD$"THIS IS THE ASCII CODE FOR";
2290 [153]" 0WAIT"
2300 [141]62000
2301 [141]55010
2310 SD[178]9:SR[178]22:CC$[178]"00":[141]55000
2320 [153]SD$"THIS IS THE BYTE MEANING"
2330 [153]"END OF STATEMENTWAIT."
2340 [141]62000
2341 [141]55010
2350 SD[178]9:SR[178]25:CC$[178]"18 08":[141]55000
2360 [153]SD$"THESE POINT TO ADDRESS OF"
2370 [153]"THE NEXTWAIT STATEMENT"
2380 [141]62000
2391 [141]55010
2410 [153]SD$"THIS 2ND STATEMENT BEGINS"
2420 [153]"AT $080D AS NOTED EARLIER."
2430 SD[178]8:SR[178]13:CC$[178]"0D 08":[141]55000
2435 [129]I[178]1[164]50:[130]
2440 [141]55010
2450 [161]A$:[139]A$[178]""[167]2430
2460 [153]SD$CL$:[153]CL$:[153]CL$
2465 SD[178]9:SR[178]25:CC$[178]"18 08":[141]55000
2470 [153]SD$"THE ADDRESS OF THE 'NEXT' STATEMENT"
2480 [153]"IS GIVEN LO-BYTEWAIT THEN HI-BYTEWAIT."
2490 [153]"IT'S (LO-BYTE)+256*(HI-BYTE)."
2500 [141]62000
2501 [141]55010
2510 [153]SD$"..SAME FOR THE 'STATEMENT NUMBER'."
2520 SD[178]8:SR[178]19:CC$[178]"0A 00":[141]55000
2525 [129]I[178]1[164]50:[130]
2530 SD[178]8:SR[178]19:CC$[178]"0A 00":[141]55000
2535 [161]A$:[139]A$[178]""[167]2520
2540 [141]62000
2541 [141]55010
2550 [153]SD$"THEN COMES 2 BYTES FOR THE "
2560 [153]"STATEMENT NUMBER 20WAIT"
2570 [153]"(1ST BYTE)+256*(2ND BYTE)"
2575 SD[178]9:SR[178]31:CC$[178]"14":[141]55000
2576 SD[178]10:SR[178]10:CC$[178]"00":[141]55000
2580 [141]62000
2581 [153][200](SD$,9)[163]31)"14"
2582 [153][200](SD$,10)[163]10)"00"
2590 SD[178]10:SR[178]13:CC$[178]"99":[141]55000
2600 [153]SD$"THIS IS THE 'TOKEN' FOR PRINTWAIT"
2610 [141]62000
2611 [141]55010
2620 SD[178]10:SR[178]16:CC$[178]"22":[141]55000
2630 [153]SD$"THIS IS THE ASCII CODE FOR "[199](34)
2640 [141]62000
2641 [141]55010
2650 SD[178]10:SR[178]19:CC$[178]"2A":[141]55000
2660 [153]SD$"THIS IS THE ASCII CODE FOR *WAIT"
2670 [141]62000
2671 [141]55010
2680 SD[178]10:SR[178]22:CC$[178]"22":[141]55000
2690 [153]SD$"..THE ASCII CODE FOR "[199](34):[153]"...AGAIN"
2700 [141]62000
2701 [141]55010
2710 SD[178]10:SR[178]25:CC$[178]"3A":[141]55000
2720 [153]SD$"THE ASCII CODE FOR :WAIT"
2730 [141]62000
2731 [141]55010
2740 SD[178]10:SR[178]28:CC$[178]"82":[141]55000
2750 [153]SD$"THE TOKEN FOR NEXTWAIT"
2760 [141]62000
2761 [141]55010
2770 SD[178]10:SR[178]31:CC$[178]"00":[141]55000
2780 SD[178]11:SR[178]10:CC$[178]"00 00":[141]55000
2790 [153]SD$"THE 3 ZERO BYTES SAY"
2800 [153]"END OF THE PROGRAMWAIT!"
2810 [141]62000
2811 [153][200](SD$,10)[163]31)"00"
2812 [153][200](SD$,11)[163]10)"00 00"
2820 [141]62000
2830 SD[178]10:SR[178]31:CC$[178]"00":[141]55000
2840 [153]SD$"THIS ONE IS THE NORMAL"
2850 [153]"END OF STATEMENTWAIT"
2860 [141]62000
2861 [141]55010
2862 SD[178]11:SR[178]10:CC$[178]"00 00":[141]55000
2870 [153]SD$"THESE GIVE 00 00WAIT AS A LINK"
2880 [153]"TO THE 'NEXT' STATEMENT."
2890 [153]"MEANING NO NEXT STATEMENTWAIT."
2900 [141]62000
2901 [141]55010
2902 [153][200](SD$,11)[163]16)"AA AA AA AA AA AAWAIT"
2910 [153]SD$"THE BUNCH OF AAWAITS IS JUST......."
2920 [153]"GARBAGE!"
2940 [141]62000:[153]"LOAD": MS$[178]"AA AA AA":[141]63100
2950 [153]"LOADIF YOU REALLYCMDCMDCMDCMDCMDCMDFREFREFREFREFREFREON WANTED TO YOU"
2960 [153]"COULD ENTER THE MLM WITH SYS2048"
2970 [153]"AND WRITE (OR CHANGE) A BASIC PROGRAM"
2980 [153]"BY SIMPLY ENTERING THE APPROPRIATE"
2990 [153]"BYTES (IN HEX!) INTO THE RIGHT LOC'NS!"
3000 [153]"..BUT LEARN YOUR ASCII CODE.."
3010 [153]"AND THE SINGLE-BYTE 'TOKENS' I USE"
3020 [153]"TO IDENTIFY THE VARIOUS BASIC COMMANDS"
3030 [153]"LIKE PRINTWAIT,FORWAIT,NEXTWAIT,RUNWAIT,LISTWAIT,ETC."
3040 [153]"(TRY IT AFTERCMDCMDCMDCMDCMDFREFREFREFREFREON YOU END TUTOR)"
3050 [141]63000:[141]40000:[141]5000
4000 [153]"LOADNOW... **********"
4001 [153]" * A TEST *
4002 PRINT" **********"
4003 FORI=1TO500:NEXT:MS$=" A TEST?![146]":GOSUB63100
4010 PRINT"I'LL ASK YOU QUESTIONS ABOUT MYSELF.":MS$="GOOD!GOOD!"
4020 PRINT"IF THE ANSWER IS AN 'ADDRESS' OR"
4030 PRINT"MEMORY LOCATION GIVE IT TO ME AS A"
4040 PRINT"4 DIGIT HEX NUMBER WITH $"
4050 PRINT"(LIKE $1234)"
4060 PRINT"...UNLESS OTHERWISE SPECIFIED!"
4070 GOSUB50000:GOSUB63000
4080 FORN=1TOQQ:PRINT"[147]"Q$(N)
4085 GETA$:IFA$<>""THEN4085
4090 INPUT" [214][157][157][157]";A$:PRINT""
4100 IFA$=A$(N)THENGOSUB63100:PRINT"":GOTO4120
4110 PRINTAN$A$(N)
4120 PRINT""M$(N):GOSUB63000:NEXT
4130 PRINT"[147]WANT TO TAKE THE **TEST** AGAIN?"
4140 INPUT" Y[157][157][157]";A$
4150 IFA$="Y"THENPRINT"[147]":GOTO4080
4160 GOTO39999
5000 PRINT"[147]AFTER RUNNING A PROGRAM LIKE:":QT$=CHR$(34):GOSUB63900
5010 PRINT" 10 AB$=STR$(7)"
5020 PRINT"LET'S SEE WHERE I PUT THE STRING '7'."
5030 PRINT"WE'LL TYPE SYS2048[146] THEN"
5040 PRINT".M 0800-0830[146] TO SEE THE PROGRAM"
5050 PRINT".M 7FF8-7FFF[146] TO SEE THE STRING."
5060 GOSUB63000:PRINT"[147]";
6001 PRINT".: 0800 00 0E 08 0A 00 41 42 24
6002 [153]".: 0808 B2 C4 28 37 29 00 00 00
6003 PRINT".: 0810 41 C2 02 FC 7F 00 00 AA
6004 [153]".: 0818 AA AA AA AA AA AA AA AA
6005 PRINT".: 7FF8 AA AA AA AA 20 37 12 04
6100 SD[178]3:SR[178]24:CC$[178]"00 00 00":[141]55000
6110 [153]SD$"THESE ARE THE 3 '00'-BYTES THAT END"
6120 [153]"THE PROGRAM."
6130 [141]62000:[141]55010
6140 SD[178]4:SR[178]9:CC$[178]"41 C2":[141]55000
6150 [153]SD$"41WAIT='A' IN ASCII"
6160 [153]"42WAIT='B'..BUT $80 IS ADDED"
6170 [153]"INDICATING A STRINGWAIT, GIVING C2WAIT"
6180 [141]62000:[141]55010
6190 SD[178]4:SR[178]15:CC$[178]"02":[141]55000
6200 [153]SD$"THE STRING AB$ IS 02WAIT BYTES LONG."
6210 [141]62000:[141]55010
6220 SD[178]4:SR[178]18:CC$[178]"FC 7F":[141]55000
6230 [153]SD$"AND IT'S LOCATED AT $7FFCWAIT."
6240 [141]62000:[141]55010
6250 SD[178]8:SR[178]21:CC$[178]"20 37":[141]55000
6260 [153]SD$"HERE, AT $7FFC, IS AB$."
6270 [153]"AB$ IS:20WAIT='SPACE'+37WAIT='7'"
6280 [141]62000:[141]55010
6290 SD[178]8:SR[178]27:CC$[178]"12 08":[141]55000
6300 [153]SD$"AND WHERE DOES IT SAY IT'S"
6310 [153]"2 BYTES LONG?"
6320 [153]"..AT MEMORY LOC'N $0812WAIT!"
6330 SD[178]4:SR[178]15:CC$[178]"02":[141]55000
6340 [141]55010:[161]A$:[139]A$[178]""[167]6330
6350 [153]"LOADIF, HOWEVER, YOUR PROGRAM WAS:"
6360 [153]" 10 AB$="QT$"7"QT$
6370 [153]"WHERE DO YOU THINK THE POINTER WILL"
6380 [153]"POINT TO?"
6390 [153]"NOTWAIT TO $7FFC, BUT TO THE LOCATION"
6400 [153]"IN THE BASIC PROGRAM ITSELF WHERE"
6410 [153]"'7' IS LOCATED."
6415 [141]62000
6420 [153]SD$"THAT IS, TO $080AWAIT"
6425 [153]"..AND IT WILL BE 1 BYTE LONG!"
6430 SD[178]3:SR[178]9:CC$[178]"7":[141]55000
6440 [141]55010:[161]A$:[139]A$[178]""[167]6430
6450 [142]
39999 [153]"LOAD":MS$[178]"AU REVOIR!WAIT":[141]63100:[153]"":[128]
40000 [153]"LOADLET'S LOOK AT SOME POINTERS":[141]63900
40005 [153]"BEFORE WRITING ANYCMDCMDCMDFREFREFREON PROGRAM"
40006 [153]"(AFTER FIRST TURNING ON THE C64)"
40010 [153]"WE'LL SYS2048WAIT TO GET INTO THE MLM.."
40020 [153]"THEN .M 002B 0033WAIT..."
40030 [153]"B*
40031 PRINT" PC SR AC XR YR SP"
40032 PRINT".; 0801 32 04 5E 00 F8"
40033 PRINT".M 002B 0033"
40034 PRINT".: 002B 01 08 03 08 03 08 03 08"
40035 PRINT".: 0033 00 80 00 00 00 80 00 FF"
40036 PRINT".X _ =EXIT...REMEMBER?"
40040 SD=14:SR=09:CC$="01 08":GOSUB55000
40050 PRINTSD$"THIS SAYS BASIC PROGRAMS START"
40060 PRINT"AT $0801..READ IT BACKWARDS!"
40070 GOSUB62000:GOSUB55010
40080 SD=14:SR=15:CC$="03 08":GOSUB55000
40090 PRINTSD$"THIS SAYS THE NIL-PROGRAM ENDS"
40100 PRINT"AT $0803..AFTER 3 '00' BYTES!"
40110 GOSUB62000:GOSUB55010
40120 SD=14:SR=21:CC$="03 08":GOSUB55000
40130 PRINTSD$"THIS SAYS ARRAYS START"
40140 PRINT"AT $0803 TOO..NO ARRAYS YET!"
40150 GOSUB62000:GOSUB55010
40160 SD=14:SR=27:CC$="03 08":GOSUB55000
40170 PRINTSD$"THIS SAYS ARRAYS END"
40180 PRINT"AT $0803 TOO..NO ARRAYS YET[146]!"
40190 GOSUB62000:GOSUB55010
40200 SD=15:SR=09:CC$="00 08":GOSUB55000
40210 PRINTSD$"THIS SAYS STRINGS GO DOWN"
40220 PRINT"TO $8000..NO STRINGS YET[146]!"
40230 GOSUB62000:GOSUB55010
40240 SD=15:SR=15:CC$="00 00":GOSUB55000
40250 PRINTSD$"THIS POINTER (TO CURRENT STRING)"
40260 PRINT"WE'LL IGNORE."
40270 GOSUB62000:GOSUB55010
40280 SD=15:SR=21:CC$="00 80":GOSUB55000
40290 PRINTSD$"THIS SAYS 'TOP OF BASIC RAM' IS"
40300 PRINT"AT $8000..OF COURSE."
40310 GOSUB62000:GOSUB55010
40320 SD=15:SR=27:CC$="14 FF":GOSUB55000
40330 PRINTSD$"THIS IS THE CURRENT BASIC "
40340 PRINT"LINE NUMBER..IGNORE!"
40350 GOSUB62000:GOSUB55010
40360 PRINT"[147]OK..NOW WE'LL WRITE A SHORT PROGRAM[146]:":FORI=1TO500:NEXT
40370 PRINT"10 FORI=1TO10:A(I)=I*I:A$(I)=STR$(I)"
40380 PRINT"20 PRINT"CHR$(34)"+"CHR$(34)":NEXT "
40390 PRINT"THEN, BEFORE[157][157][157][157][157][157][184][184][184][184][184][184][145] RUNNING IT"
40400 PRINT"WE'LL SYS2048[146]:"
40410 PRINT"B*
40420 [153]" PC SR AC XR YR SP"
40430 [153]".; 0801 32 04 5E 00 F8"
40440 [153]".M 002B 0033"
40450 [153]".: 002B 01 08 2E 08 2E 08 2E 08"
40460 [153]".: 0033 00 80 DA 7F 00 80 14 FF"
40470 [153]".X"
40480 SD[178]14:SR[178]09:CC$[178]"01 08":[141]55000
40490 [153]SD$"THE BASIC PROGRAM STARTS"
40500 [153]"AT $0801..OF COURSE!"
40510 [141]62000:[141]55010
40520 SD[178]14:SR[178]15:CC$[178]"2E 08":[141]55000
40530 [153]SD$"THE BASIC PROGRAM ENDS"
40540 [153]"AT $082E..AFTER THE 3 '00' BYTES."
40550 [141]62000:[141]55010
40560 SD[178]14:SR[178]21:CC$[178]"2E 08 2E 08":[141]55000
40570 [153]SD$"NO VARIABLES, NO ARRAYS OR"
40580 [153]"STRINGS CREATED YET."
40590 [141]62000:[141]55010
40600 SD[178]15:SR[178]09:CC$[178]"00 80 DA 7F 00 80 14 FF":[141]55000
40610 [153]SD$"NOTHING WORTH NOTING (!)"
40620 [153]"HAS HAPPENED YET."
40630 [141]62000:[141]55010
40640 [153]SD$"NOWWAIT WE'LL RUNCMDCMDCMDFREFREFREON THE PROGRAM:"
40650 [153]"WATCH...."
40655 [153]" "
40656 [153]"10 FORI=1TO10:A(I)=I*I:A$(I)=STR$(I)"
40657 [153]"20 PRINT"[199](34)"+"[199](34)":NEXT"
40658 [129]I[178]1[164]5:[153]" ":[130]
40660 [141]62000:[141]55010
40670 SD[178]14:SR[178]09:CC$[178]"01 08":[141]55000
40680 [153]SD$"START OF BASIC WON'T CHANGE"
40690 [141]62000:[141]55010
40700 SD[178]14:SR[178]15:CC$[178]"2E 08":[141]55000
40710 [153]SD$"END OF BASIC WON'T CHANGE"
40720 [153]"(IT'S ALSO 'START OF VARIABLES)"
40730 [141]62000:[141]55010
40740 SD[178]14:SR[178]21:CC$[178]"35 08 9B 08":[141]55000
40750 [153]SD$"ARRAY A(I) IS STORED FROM"
40760 [153]"$0835 AND 'UP'."
40770 [141]62000
40771 [153]SD$"IT ACTUALLY ENDS AT $0872"
40772 [153]"AND INFO ON WHERE A$(I) IS STORED"
40773 [153]"GOES INTO $0873-$089B."
40774 [141]62000:[141]55010
40780 SD[178]15:SR[178]09:CC$[178]"D7 7F":[141]55000
40790 [153]SD$"ARRAY A$(I) IS STORED FROM"
40800 [153]"$8000 (REALLY $7FFF) DOWNWAIT T0 $7FD7"
40810 [141]62000
40820 [153]SD$"REMEMBER..THE LOC'NS OF A$(I)"
40830 [153]"ARE KEPT IN $0873-$089B"
40840 [141]62000
40850 [153]SD$"THE STRINGS THEMSELVES='1'-'10'"
40860 [153]"ARE STORED IN $7FD7-$7FFF."
40870 [141]62000:[141]55010
40875 SD[178]14:SR[178]15:CC$[178]"2E 08 35 08":[141]55000
40880 [153]SD$"SOWAIT...THE VALUE OF 'I' IS STORED"
40890 [153]"IN 7 BYTES FROM $082E TO $0834"
40900 [141]62000
40910 [153]SD$"2 BYTES FOR IT'S NAME:IWAIT"
40920 [153]"5 BYTES FOR IT'S VALUE=1,THEN 2,ETC."
40930 [141]62000:[141]55010
40940 SD[178]14:SR[178]21:CC$[178]"35 08 9B 08":[141]55000
40950 [153]SD$"VALUES OF A(I) GO INTO LOC'NS"
40960 [153]"$0835-$0872 (INCLUDING 2 BYTES"
40970 [153]"FOR IT'S NAME AWAIT)"
40980 [141]62000
40990 [153]SD$"THE LAST PART OF THE RANGE"
41000 [153]"$0835-$089B IS TO KEEP TRACK OF"
41010 [153]"WHERE EACH A$(I) IS STORED IN HI RAM."
41020 [141]62000:[141]55010
41030 [153]SD$"IF YOU TYPE CLRWAIT AFTER RUNWAITING"
41040 [153]"THE PROGRAM,ALL VARIABLES,ARRAYS AND"
41050 [153]"STRINGS GET CLEARED."
41060 [141]62000
41070 [153]SD$"THE ABOVE POINTERS REVERT TO..."
41080 [141]62000
41090 SD[178]14:SR[178]09:CC$[178]"01 08 2E 08 2E 08 2E 08":[141]55010
41100 SD[178]15:SR[178]09:CC$[178]"00 80 DA 7F 00 80 14 FF":[141]55010
41110 [153]SD$"JUST THE PROGRAM..FROM $0801"
41120 [153]"TO $082E"
41130 [141]62000
41140 [153]SD$"..AND GUESS WHAT HAPPENS IF YOU"
41150 [153]"TYPE NEWWAIT!!"
41160 [141]62000
41180 SD[178]14:SR[178]09:CC$[178]"01 08 03 08 03 08 03 08":[141]55010
41190 SD[178]15:SR[178]09:CC$[178]"00 80 DA 7F 00 80 14 FF":[141]55010
41200 [153]SD$"I PUT 00 00 00 INTO $0800-$0802"
41210 [153]"..AND THAT'S ALL FOLKS!"
41220 [141]62000:[153]"LOAD":MS$[178]"THAT'S ALL":[141]63100:[142]
50000 QQ[178]10:AN$[178]"ANSWER="
50001 A$(1)[178]"V2":[139][194](32768)[178]9 [167]A$(1)[178]"V4"
50004 [129]I[178]2[164]QQ:[135]A$(I):[130]
50005 [131] $A000,$0400,$0801,3,N,Y,$033C,Y,Y
51000 [129]I[178]1[164]QQ:[135]Q$(I):[130]
51001 [131] "LOADWHAT BRAND OF BASIC HAVE I GOTWAIT V2/V4"
51002 [131] "LOADWHERE DO THE BASIC ROMS START"
51003 [131] "LOADWHERE DOES SCREEN MEMORY START"
51004 [131] "LOADWHERE DO BASIC PROGRAMS STARTWAIT"
51005 [131] "LOADBASIC PROGRAMS END IN ? ZERO BYTES"
51006 [131] "LOADPEEK(1025)+256*PEEK(1026)WAIT=1ST STATEMENT NUMBER(Y/N)"
51007 [131] "LOADSTRINGS ARE STORED AT TOP OF RAMWAIT(Y/N)"
51008 [131] "LOADTHE CASSETTE BUFFER STARTS WHERE"
51009 [131] "LOAD$002B/$002C=POINTER TO START OF BASICWAIT(Y/N)"
51010 [131] "LOAD$0037/$0038=POINTER TO TOPOF RAMWAIT(Y/N)"
52000 [129]Q[178]1[164]QQ:[135]M$(Q):[130]
52001 [131] IF PEEK(32768)=9 THEN IT'S V4.
52002 [131] FROM $A000 TO $BFFF.
52003 [131] T0 $07FF..JUST BEFORE START OF BASIC.
52004 [131] 2048=$0800 HAS '00'
52005 [131] THE 'LINK' IS 00 00.
52006 [131] ABOVE GIVES 'LINK' TO 2ND STATEMENT
52007 [131] THEY'RE STORED FROM $7FFF DOWN
52008 [131] DIRTY QUESTION!!
52009 [131] 43/44 IN DECIMAL
52010 [131] 55/56 IN DECIMAL
52999 [142]
55000 [153][200](SD$,SD)[200](SR$,SR)""CC$"WAIT":[142]
55010 [153][200](SD$,SD)[200](SR$,SR)CC$"WAIT":[142]
60000 [143] INITIALIZE
60001 BT$[178]"":[129]I[178]1[164]24:BT$[178]BT$[170]"":[130]
60002 PT$[178]"ORTANTANTANTANTANTANTANTANTANTAN^CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD/=TANTANTANTANTANTANTANTAN=EXP"
60003 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDFN============THEN"
60004 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)(null)ONONONONCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD"
60005 PT$[178]BT$[170]"ONONONONONON"[170]PT$[170]"STOP"
60007 ML$[178]""
60008 WD[178]40:CRT[178]1024:[153][199](142)
60009 W2[178]WD[173]2:W3[178]WD[171]1:W1$[178][202]([196](WD),2):[151]53281,15:[151]53280,12:[153]"STOP"
60010 W2$[178][202]([196](W2),2):W3$[178][202]([196](W3),2)
60020 [142]
62000 [141]63000
62001 [153]SD$CL$:[153]CL$:[153]CL$
62003 [142]
63000 [153]"HIT RETURNWAIT TO CONTINUE";
63001 [161]A$:[139]A$[179][177]""[167]63001
63002 [161]A$:[139]A$[178]""[167]63002
63003 [142]
63100 [129]T[178]1[164]5:[153]PT$MS$;
63101 [153]PT$" ";
63102 [153]PT$MS$;:[130]
63103 [153]:[142]
63900 SD$[178]"":CL$[178]"WAIT WAIT"
63901 SR$[178]""
63902 [142]